<html>
  <head>
    <title>事件 JavaScript Event Api   </title>
  </head>
  <body>
    <script>
      // 事件API    JavaScript Event Api

              /*
                    abp.event 对象时一个简单的服务，用于在浏览器中发布和订阅全局事件。


                          (此API与服务器端的本地或分布式事件无关。它是在浏览器边界中工作的，使用UI组件以松散耦合的方式进行通信)
              */

              /*
                    一、基本用法

                              1、触发事件  Publishing Events  

                                        使用 abp.event.trigger 发布事件。

                                        eg:  发布篮子更新事件

                                              abp.event.trigger('basketUpdate');


                                        这将触发所有订阅的回调。



                              2、订阅活动   Subscribing to the Events

                                        使用 abp.event.on 订阅事件。

                                        eg:  订阅 basketUpdated 事件

                                            abp.event.on('basketUpdated', function() {
                                                    console.log('Handled the basketUpdated event...');
                                            });

                                        订阅活事件后，你可是获取事件。


                              3、取消事件订阅

                                        如果你需要取消已经订阅的事件，你可以使用 abp.event.off(eventName,callback)函数。

                                        在这种情况下，你将回调作为单独的函数声明。

                                        eg: 订阅和取消订阅

                                              function onBasketUpdated(){
                                                  console.log("Handled the basketUpdated event...");
                                              }

                                              // 订阅
                                              abp.event.on('basketUpdated',onBasketUpdated);

                                              // 取消订阅 
                                              abp.event.off('basketUpdated',onBasketUpdated);

                                        取消订阅事件后，你不会收到事件。
              */

              /*
                  三、事件参数  Event Arguments

                          你可以将参数 (任何数量的参数)传递给 trigger 方法并在订阅回调中获取它们。

                          eg: 添加购物篮作为事件参数

                                        // 订阅事件
                                        abp.event.on('basketUpdated', function(basket) {
                                              console.log('The new basket object: ');
                                              console.log(basket);
                                        });

                                        // 事件触发，并传递事件参数
                                        abp.event.trigger('basketUpdated', {
                                          items: [
                                            {
                                              "productId": "123",
                                              "count": 2
                                            },
                                            {
                                              "productId": "832",
                                              "count": 1
                                            }
                                          ]
                                        });

                            ★、多参数

                                      如果要传递多个参数，可以像 abp.event.trigger('basketUpdated',arg0,arg1,arg3) 一样传递。

                                      然后你可以将相同的参数列表添加到订阅者端的回调函数中。


                                      （提示：  或者，你可以发送一个对象，该对象对每个参数都有一个单独的字段。
                                      
                                                这使得将来更容易扩展、更改事件参数二不破坏订阅者）


              */
    </script>
  </body>
</html>